#include<bits/stdc++.h>
using namespace std;
struct node
{
    int d,v,a;
}car[100000+10];
int p[100000+10];
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        int n,m,L,V;
        bool flag=0;
        cin>>n>>m>>L>>V;
        for(int i=1;i<=n;i++)
        {
            cin>>car[i].d>>car[i].v>>car[i].a;
            if(car[i].a!=0) flag=1;
        }
        for(int i=1;i<=m;i++)
        {
            cin>>p[i];
        }
        if(!flag)
        {
            int ans=0;
            for(int i=1;i<=n;i++)
            {
                if(car[i].v>V&&car[i].d<=p[m]) ans++;
            }
            cout<<ans<<" "<<m-1+(ans==0)<<"\n";
        }
    }
    return 0;
}
